'use strict';
// 这一块写了不是很清楚为啥要写
// 登录验证的中间件逻辑基本上已经实现了，后续我们如果想要新增一些接口是需要用户权限的，便可以在抛出方法的第二个参数，添加 _jwt 方法，这样便可在进入接口逻辑之前就进行用户权限的判断。
module.exports = (secret) => {

  return async function jwtErr(ctx, next) {
    const token = ctx.request.header.authorization; // 若是没有 token，返回的是 null 字符串
    let decode//decode就是token解密后的对象
    if(token != 'null' && token) {
      try {
        decode = ctx.app.jwt.verify(token, secret); // 验证token
        await next();
      } catch (error) {
        console.log('error', error)
        ctx.status = 200;
        ctx.body = {
          msg: 'token已过期,请重新登录',
          code: 401,
        }
        return;
      }
    } else {
      ctx.status = 200;
      ctx.body = {
        code: 401,
        msg: 'token不存在',
      };
      return;
    }
  }
}
